package com.taotao.tools.core.concurrent.thread.pipeline;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;

/**
 * 实现下面场景
 * <p>
 *
 *   RocksDB 又引入了 Pipeline Write 来解决写 WAL + memtable 整体串行执行的问题。
 *
 * 引入 Pipeline Write 后，RocksDB 的写入流程大致如下：
 *
 * 步：紧急集合。同上。
 * 步：齐头并进 + 透风报信。这里的不同之处在于，写组长写完 WAL 后，提前透风报信（NOTIFY OTHERS）给下一个组的写组长，我写完 WAL 了，你们现在立刻马上可以开始写 WAL 了。我们组接下来要一起写 memtable 了，我们写完 memtable 后再来给你报信，你们组再立刻马上开始写 memtable。
 * 步：原地解散。同上。
 *
 * </p>
 *
 * @author fanbeibei
 * @version 1.0.0
 * @date 2023/12/11 14:15
 */
public class PipeLine {

    ExecutorService threadpool;

    /**
     * groupName -> thread
     */
    private ConcurrentHashMap<String, Thread> groupThreadMap = new ConcurrentHashMap<>();

    private ArrayBlockingQueue<ThreadGroup> tgQueue;


    private int groupSize = 5;


    public void addTask(){

    }




    /**
     * 通知下一个组
     *
     */
    public  void noticeNextGroup(String msg){

    }




}
